<?php 
/** @name : Date.php via KOOK-FRAMEWORK - @author : Theerasak Phuetthanyakij - @since : 25 �.�. 2555 14:46:40 - @encoding : UTF-8 */

/**
 * 
 * @name Utilities สำหรับจัดการกับวันที่
 * @author Theerasak Phuetthanyakij
 *
 */
class Date
{
	/**
	 * @method แปลงค่าจาก string ที่เป็นวันที่ภาษาไทยลงไปยังฐานข้อมูล
	 * @param strThDate = วันที่ภาษาไทย
	 * @return วันที่ในรูปแบบที่ sql ต้องการ
	 * @example Date::thaiDateToSQL("31/01/2554");
	 */
	public static function thaiDateToSQL($strThDate)
	{
		// สร้าง วันที่ โดยนำวันที่ไปแปลงเป็น ค.ศ. และนำมารวมกับ 00:00:00 เพื่อให้เวลาเป็น 0 ด้วย เนื่องจากใช้เฉพาะวันที่
		$date = date_create_from_format('d/m/Y', self::formatFromThYearToEnYear($strThDate));
		
		// นำมาแปลงเป็น format มาตรฐานของ MySQL
		return $date->format('Y-m-d');
	}
	
	/**
	 * @method แปลงค่าจาก string ที่เป็นวันที่พร้อมเวลาภาษาไทย ลงไปยังฐานข้อมูล
	 * @param strThaiDateTime = วันที่พร้อมเวลาภาษาไทย
	 * @return วันที่ในรูปแบบที่ sql ต้องการ
	 * @example Date::thaiDateToSQL("31/01/2554 01:23");
	 */
	public static function thaiDateTimeToSQL($strThaiDateTime)
	{
		// TODO แก้ไข ให้แปลงจาก วันที่เวลาภาษาไทย แล้วไป convert เป็นภาษาอังกฤษ
		$date = date_create_from_format('d/m/Y H:i', $strThaiDateTime);
		return $date->format('Y-m-d H:i:s');
	}
	
	/**
	 * @method แปลงค่าจาก string ที่เป็นปี ค.ศ. ลงไปยังฐานข้อมูล
	 * @param strEnDate = วันที่ภาษาไทย
	 * @return วันที่ในรูปแบบที่ sql ต้องการ
	 * @example Date::engDateToSQL("31/01/2012");
	 */
	public static function engDateToSQL($strEnDate)
	{
		// สร้าง วันที่ โดยนำวันที่ไปแปลงเป็น ค.ศ.
		$date = date_create_from_format('d/m/Y', $strEnDate);
		
		// นำมาแปลงเป็น format มาตรฐานของ MySQL
		return $date->format('Y-m-d');
	}
	
	/**
	 * @method แปลงค่าจาก string ที่เป็นวันที่ในปี ค.ศ. พร้อมเวลา ลงไปยังฐานข้อมูล
	 * @param strThaiDateTime = วันที่พร้อมเวลาภาษาไทย
	 * @return วันที่ในรูปแบบที่ sql ต้องการ
	 * @example Date::thaiDateToSQL("31/01/2554 01:23");
	 */
	public static function engDateTimeToSQL($strEngDateTime)
	{
		$date = date_create_from_format('d/m/Y H:i', $strEngDateTime);
		return $date->format('Y-m-d H:i:s');
	}
	
	/**
	 * @method แปลงค่าจาก string ที่เป็นวัน/เดือน/ปี แบบ พ.ศ. เป็น วัน/เดือน/ปี แบบ ค.ศ.
	 * @param engDate = วัน/เดือน/ปี ค.ศ.
	 * @return วัน/เดือน/ปี พ.ศ.
	 * @example Date::formatFromEnYearToThYear("31/01/2001");
	 */
	public static function formatFromEnYearToThYear($engDate)
	{
		$dateArr = split("/",$engDate);
		return $dateArr[0]."/".$dateArr[1]."/".($dateArr[2]+543);
	}
	
	/**
	 * @method แปลงค่าจาก string ที่เป็นวัน/เดือน/ปี แบบ ค.ศ. เป็น วัน/เดือน/ปี แบบ พ.ศ.
	 * @param engDate = วัน/เดือน/ปี พ.ศ.
	 * @return วัน/เดือน/ปี ค.ศ.
	 * @example Date::formatFromThYearToEnYear("31/01/2555");
	 */
	public static function formatFromThYearToEnYear($thaiDate)
	{
		$dateArr = split("/",$thaiDate);
		return $dateArr[0]."/".$dateArr[1]."/".($dateArr[2]-543);
	}
}
?>